<?php

require_once('Contact.php');
require_once('lib/nusoap.php');
error_reporting(E_ERROR);

$URL = 'http://krokmitaine.free.fr/webserviceexploration/ContactService.php?wsdl';

/***********************************/
/** INITIALISATION DU SERVICE WEB **/
/***********************************/

$server = new soap_server();
$server->configureWSDL('ContactService', $URL);


/***************************/
/** DECLARATION DES TYPES **/
/***************************/

$server->wsdl->addComplexType(
  'Contact',
  'complexType',
  'struct',
  'all',
  '',
  array(
    'id' => array('name' => 'id', 'type' => 'xsd:integer'),
    'firstName' => array('name' => 'firstName', 'type' => 'xsd:string'),
    'lastName' => array('name' => 'lastName', 'type' => 'xsd:string')
  )
);

$server->wsdl->addComplexType(
  'ArrayOfContact',
  'complexType',
  'array',
  '',
  'SOAP-ENC:Array',
  array(),
  array(
    array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:Contact[]')),
  'tns:Contact'
);

/******************************/
/** DECLARATION DES SERVICES **/
/******************************/

$server->register(
  'getContacts', 
  array(), 
  array('result' => 'tns:ArrayOfContact'),
  $URL,
  $URL.'#getContacts',
  'rpc',
  'encoded',
  'Retourne la liste de tous les contacts.'
);

/*****************************/
/** DEFINITION DES SERVICES **/
/*****************************/

function getContacts()
{
  $contacts = array();
  for ($i=0; $i < 10; $i++)
  {
    $contact = new Contact();
    $contact->id = $i;
    $contact->firstName = 'firstName'.$i;
    $contact->lastName = 'lastName'.$i;
    $contacts[] = $contact;
  }
  return $contacts;
}

/*********************************/
/** FINALISATION DU SERVICE WEB **/
/*********************************/

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);

?>
